package com.jiyun.service.impl;

import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jiyun.mapper.CouponMapper;
import com.jiyun.pojo.Coupon;
import com.jiyun.pojo.JsonRes;
import com.jiyun.service.CouponService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author: 刘清芳
 * @description:
 * @date: 2024/1/2 16:54
 */
@Service
public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements CouponService {

    @Autowired
    CouponService couponService;
    @Override
    public Page<Coupon> findAllCoupon(Coupon coupon, Integer pageNum, Integer pageSize) {
        // 创建一个名为couponPage的Page对象，用于存储优惠券数据，设置分页数和每页数量
        Page<Coupon> couponPage = new Page<>(pageNum, pageSize);
// 创建一个名为wrapper的LambdaQueryWrapper对象，用于封装查询条件
        LambdaQueryWrapper<Coupon> wrapper = new LambdaQueryWrapper<>();
//        逻辑删除
        wrapper.eq(Coupon::getRemoval, 1);
// 如果优惠券名称不为空，则进行模糊查询
        if (StringUtils.isNotBlank(coupon.getName())) {
            wrapper.like(Coupon::getName, coupon.getName());
        }
// 如果优惠券是否有效值不为空，则进行等于查询
        if (coupon.getOpen() != null) {
            wrapper.eq(Coupon::getOpen, coupon.getOpen());
        }
// 如果优惠券类型值不为空，则进行等于查询
        if (coupon.getYhstatus() != null) {
            wrapper.eq(Coupon::getYhstatus, coupon.getYhstatus());
        }
// 如果优惠券发送方式值不为空，则进行等于查询
        if (coupon.getSending() != null) {
            wrapper.eq(Coupon::getSending, coupon.getSending());
        }
        return couponService.page(couponPage, wrapper);
    }

    @Override
    public JsonRes deleteById(Integer id) {
        // 创建LambdaQueryWrapper对象
        LambdaQueryWrapper<Coupon> wrapper = new LambdaQueryWrapper<>();
        // 根据id进行模糊查询
        wrapper.like(Coupon::getRemoval, id);
        // 根据id获取Coupon对象
        Coupon byId = couponService.getById(id);
        // 设置Removal属性为1
        byId.setRemoval(0);
        // 更新Coupon对象
        couponService.updateById(byId);
        return JsonRes.success("删除成功");
    }
}
